package com.brillilab.service.core.experiments;


import com.brillilab.domain.po.experiments.ExperimentGroup;
import com.brillilab.domain.po.experiments.ExperimentPhase;
import com.brillilab.domain.po.experiments.ExperimentStep;
import com.brillilab.domain.po.experiments.ExperimentTroubleShooting;
import com.brillilab.domain.vo.kit.KitInfoListVo;

import java.util.List;

/**
 * <p>
 * 实验trouble shooting 服务类
 * </p>
 *
 * @author WuMenghao
 * @since 2019-09-05
 */
public interface IExperimentTroubleShootingService{

    /**
     * 插入信息
     * @param entity
     * @return
     */
    ExperimentTroubleShooting insert(ExperimentTroubleShooting entity);

    /**
     * 修改信息
     * @param entity
     * @return
     */
    ExperimentTroubleShooting update(ExperimentTroubleShooting entity);

    /**
     * 获取troubleShooting信息
     * @param experimentId
     * @return
     */
    List<ExperimentTroubleShooting> selectByExperimentId(Long experimentId);

    /**
     * 实验阶段
     * @param experimentId
     * @return
     */
    List<ExperimentPhase> selectExperimentPhase(Long experimentId);

    /**
     * 实验步骤
     * @param experimentId
     * @return
     */
    List<ExperimentStep> selectExperimentStep(Long experimentId);

    /**
     * 获取实验阶段使用试剂
     * @param experimentId
     * @return
     */
    List<KitInfoListVo> selectExperimentReagent(Long experimentId);

    List<ExperimentGroup> selectExperimentGroupList(Long experimentId);

    /**
     * 删除该实验下所有troubleShooting
     * @param experimentId
     */
    int deleteByExperimentId(Long experimentId);

    /**
     * 查询该实验下所有记录id
     * @param experimentId
     * @return
     */
    List<Long> selectIds(Long experimentId);

    int deleteBatchById(List<Long> ids);

}
